Ruby 日記 27日目: 「定義に関する操作」のalias
期待した出力結果になるようにXXXXに適切なコードを選べ
code:rb
class String
XXXX
end
p "12345".hoge
選択肢:
alias :hoge, :reverse
alias :reverse, :hoge
alias hoge reverse
alias reverse hoge
解説:
code:rb
alias foo bar
alias :foo :bar
alias $MATCH $&
メソッドあるいはグローバル変数に別名をつけます。メソッド名に は識別子そのものか リテラル/シンボル を指定します(obj.method のよ うな式を書くことはできません)。alias の引数はメソッド 呼び出し等の一切の評価は行われません。
グローバル変数の別名をつけることはできません
だな。
あ、あと、カンマ区切りで渡すか否か、も違うね。
alias はカンマなし
Module#alias_method は2つの引数をとるメソッドなのでカンマ区切りで渡す
code:sh
# ruby gold/ex27/choice01.rb
gold/ex27/choice01.rb:2: syntax error, unexpected ','
alias :hoge, :reverse
^
code:sh
# ruby gold/ex27/choice02.rb
gold/ex27/choice02.rb:2: syntax error, unexpected ','
alias :reverse, :hoge
^
code:sh
# ruby gold/ex27/choice03.rb
54321
code:sh
# ruby gold/ex27/choice04.rb
gold/ex27/choice04.rb:2:in <class:String>': undefined method hoge' for class `String' (NameError)
from gold/ex27/choice04.rb:1:in `<main>'
よって正解は「alias hoge reverse」だ